/*
 * Clase contenedora de datos de la tabla Movimientos
*/
package pojos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.PojosFactory;

/** 
 * @author seiloprub 
 */

public class Movimientos implements Pojo{

    private int id;
    // Claves foraneas
    private int mov_usuario;
    // Atributos
    private Date mov_fecha;
    private Double mov_cantidad;
    private int mov_tipo;
    
    public Movimientos(int id, int mov_usuario, Date mov_fecha, Double mov_cantidad, int mov_tipo) {
        darValores(id, mov_usuario, mov_fecha, mov_cantidad, mov_tipo);
    }
    
    public Movimientos(int mov_usuario, Date mov_fecha, Double mov_cantidad, int mov_tipo) {
        darValores(-1, mov_usuario, mov_fecha, mov_cantidad, mov_tipo);
    }

    private void darValores(int id, int mov_usuario, Date mov_fecha, Double mov_cantidad, int mov_tipo) {
        this.id=id;
        this.mov_usuario=mov_usuario;
        this.mov_fecha=mov_fecha;
        this.mov_cantidad=mov_cantidad;
        this.mov_tipo=mov_tipo;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @return the usuario
     */
    public int getMov_usuario() {
        return mov_usuario;
    }

    /**
     * @return the fecha
     */
    public Date getMov_fecha() {
        return mov_fecha;
    }

    /**
     * @return the cantidad
     */
    public Double getMov_cantidad() {
        return mov_cantidad;
    }

    /**
     * @return the tipo
     */
    public int getMov_tipo() {
        return mov_tipo;
    }
  
    /**
     * guarda y actualiza los movimientos
     */
    @Override
    public int guardar(Connection con) {
        int count=0;       
        if(this.id==-1) {
            //INSERTAR            
            String sql="INSERT INTO movimientos(mov_usuario, mov_fecha, mov_cantidad, mov_tipo)"
                        + " VALUES(?,?,?,?)";
            PreparedStatement stmt=null;
            try {
                stmt=con.prepareStatement(sql);
                //poner los valores
                stmt.setInt(1, this.getMov_usuario());
                stmt.setString(2, PojosFactory.getSdf().format(this.getMov_fecha()));
                stmt.setDouble(3, this.getMov_cantidad());
                stmt.setInt(4, this.getMov_tipo());
                // ejecutar
                count=stmt.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    if (stmt!=null) {
                        stmt.close();
                    }
                } catch (SQLException ex) {
                    Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } else {
            //ACTUALIZAR
            String sql="UPDATE movimientos SET mov_usuario=?, mov_fecha=?, mov_cantidad=?, mov_tipo=?"
                        + " WHERE id=?";
            PreparedStatement stmt=null;
            try {
                stmt=con.prepareStatement(sql);
                //poner los valores
                stmt.setInt(1, this.getMov_usuario());
                stmt.setString(2, PojosFactory.getSdf().format(this.getMov_fecha()));
                stmt.setDouble(3, this.getMov_cantidad());
                stmt.setInt(4, this.getMov_tipo());
                stmt.setInt(5, this.getId());
                // ejecutar
                count=stmt.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    if (stmt!=null) {
                        stmt.close();
                    }
                } catch (SQLException ex) {
                    Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }       
        return count;
    }
    
    /**
     * borra los movimientos
     */
    @Override
    public int borrar(Connection con) {
        int count=0;
        String sql="DELETE FROM movimientos WHERE id=?";
        PreparedStatement stmt=null;
        try {
            stmt=con.prepareStatement(sql);
            //poner los valores
            stmt.setInt(1, id);
            // ejecutar
            count=stmt.executeUpdate();
        } catch (SQLException ex) {             
            Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
        } finally {            
            try {
                if(stmt!=null) {
                    stmt.close();
                }                
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            }     
        }
        return count;
    } 
}
